// 继承的两种方式：1.extends(继承父类) 2.implements(实现接口)

// extends
class Animal {
  move() {
    console.log('走几步')
  }
}

class Dog extends Animal {
  dname = '二哈'
  skill() {
    console.log('啃骨头')
  }
}

const p4 = new Dog()
p4.move()
p4.skill()
console.log(p4.dname)

// implements
interface Singer {
  name: string
  sing(): void
}

class Lisi implements Singer {
  // name: string 也可以给name默认值
  name = '古巨基'
  sing() {
    console.log('必杀技')
  }
}
const p5 = new Lisi()
p5.sing()
console.log('name:', p5.name)

// 访问性修饰符
// public（默认） : 公有，可以在任何地方被访问。
// protected : 受保护，可以被其自身以及其子类访问。
// private : 私有，只能被其定义所在的类访问。
